const app = getApp()
const api = require('../../utils/api')
const layer = require('../../utils/layer');
const socketUtils = require('../../utils/socketUtils');
Component({

    /**
     * 页面的初始数据
     */
    data: {
        userInfo: undefined,
    },
    /**
     * 生命周期函数--监听页面加载
     */
    attached(options) {
        this.initUserInfo()
    },
    methods: {
        /**
         * 初始化用户信息
         */
        initUserInfo() {
            let userInfo = app.globalData.userInfo;
            this.setData({
                userInfo
            })
            // 如果没有全局用户信息，但有token就通过token获取
            if (!userInfo) {
                if (wx.getUserProfile) {
                    this.setData({
                        canIUseGetUserProfile: true
                    })
                }
                // 刷新最新的用户信息
                let token = wx.getStorageSync('token');
                let userId = wx.getStorageSync('userId');
                if (token && userId) {
                    wx.showLoading({
                        title: '用户信息获取中...',
                        icon: 'none'
                    })
                    this.requestUserInfo()
                }
            }
        },
        /**
         * 获取后台用户数据
         */
        requestUserInfo() {
            const that = this;
            api.get('/user/get/userInfo').then(res => {
                wx.hideLoading()
                if (res.code === 200) {
                    const userInfo = res.data
                    app.globalData.userInfo = userInfo
                    that.setData({
                        userInfo,
                    })
                    // 建立socket连接
                    socketUtils.connectSocketServer(userInfo.id);
                } else {
                    wx.showToast({
                        title: res.message,
                        icon: 'none',
                        duration: 2000,
                    })
                }
            })
        },
        /**
         * 手动登录
         */
        login() {
            let that = this;
            // 推荐使用 wx.getUserProfile 获取用户信息，开发者每次通过该接口获取用户个人信息均需用户确认
            // 开发者妥善保管用户快速填写的头像昵称，避免重复弹窗
            wx.getUserProfile({
                desc: '用于完善用户资料', // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写
                success: (res) => {
                    let userData = JSON.parse(res.rawData)
                    layer.showLoading("正在登录中...");
                    wx.login({
                        success(res) {
                            if (res.code) {
                                userData.code = res.code;
                                // 请求登录
                                api.post("/user/login", userData).then(res => {
                                    wx.hideLoading()
                                    let userInfo = res.data
                                    app.globalData.userInfo = userInfo
                                    wx.setStorageSync("token", res.data.token);
                                    wx.setStorageSync("userId", res.data.id);
                                    that.setData({
                                        userInfo,
                                    })
                                    // 建立socket连接
                                    socketUtils.connectSocketServer(userInfo.id);
                                });
                            } else {
                                wx.hideLoading()
                                layer.showToast(res.errMsg)
                            }
                        },
                        fail(res) {
                            wx.hideLoading()
                            layer.showToast(res.errMsg)
                        }
                    })
                },
                fail: (res) => {
                    wx.hideLoading()
                }
            })
        },
    }
})